package cqrtplm.dto;

import lombok.Data;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Data
public class EnumTreeNodeDTO {
    private ImportEnumDTO data;
    private List<EnumTreeNodeDTO> children = new ArrayList<>();

    public EnumTreeNodeDTO(ImportEnumDTO data) {
        this.data = data;
    }

    public static List<EnumTreeNodeDTO> buildTree(List<ImportEnumDTO> dataList) {
        Map<String, EnumTreeNodeDTO> nodeMap = new HashMap<>();
        List<EnumTreeNodeDTO> rootNodes = new ArrayList<>();

        // 创建所有节点并存入 map
        for (ImportEnumDTO dto : dataList) {
            nodeMap.put(dto.getEnumID(), new EnumTreeNodeDTO(dto));
        }

        // 构建父子关系
        for (ImportEnumDTO dto : dataList) {
            EnumTreeNodeDTO currentNode = nodeMap.get(dto.getEnumID());
            if ("0".equals(dto.getParentEnumID())) {
                // 如果没有父节点，则是根节点
                rootNodes.add(currentNode);
            } else {
                EnumTreeNodeDTO parentNode = nodeMap.get(dto.getParentEnumID());
                if (parentNode != null) {
                    parentNode.getChildren().add(currentNode);
                }
            }
        }
        return rootNodes;
    }

}
